package com.jinmdz.fmis.api.api.model.cremation;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jinmdz.fmis.api.api.model.common.BusinessCharges;
import com.jinmdz.fmis.common.annotation.AnValidate;
import com.jinmdz.fmis.common.constant.EValidateCode;
import com.jinmdz.fmis.core.annotation.AnDict;
import com.jinmdz.fmis.core.base.BaseBean;
import com.jinmdz.fmis.core.constant.EDictCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 火化请求响应数据
 *
 * @author LiCongLu
 * @date 2020-02-15 19:10
 */
@ApiModel(value = "火化请求响应数据", description = "火化请求响应数据")
public class CremationData extends BaseBean {
    /**
     * 主键
     */
    @AnValidate(name = "主键", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "主键", name = "id", position = 1)
    private Integer id;

    /**
     * 业务编码
     */
    @AnValidate(name = "业务编码", required = true)
    @ApiModelProperty(value = "业务编码", name = "businessCode", position = 2)
    private String businessCode;

    /**
     * 火化炉类型编码
     */
    @AnValidate(name = "火化炉类型编码", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "火化炉类型编码", name = "furnaceTypeCode", position = 3)
    private Integer furnaceTypeCode;

    /**
     * 火化炉类型名称
     */
    @AnValidate(name = "火化炉类型")
    @ApiModelProperty(value = "火化炉类型", name = "furnaceType", position = 4)
    @AnDict(dict = EDictCode.FURNACE_TYPE, ref = "furnaceTypeCode")
    private String furnaceType;

    /**
     * 是否预约
     */
    @AnValidate(name = "是否预约", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "是否预约", name = "asAppointment", position = 5)
    private Integer asAppointment;

    /**
     * 预约日期
     */
    @AnValidate(name = "预约日期", required = true)
    @ApiModelProperty(value = "预约日期", name = "appointmentDate", example = "2020-02-07", position = 6)
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date appointmentDate;

    /**
     * 预约时间段
     */
    @AnValidate(name = "预约时间段")
    @ApiModelProperty(value = "预约时间段", name = "appointmentTimeSegment", example = "10:10-11:11", position = 7)
    private String appointmentTimeSegment;

    /**
     * 是否取走骨灰
     */
    @AnValidate(name = "是否取走骨灰", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "是否取走骨灰", name = "asTakeAsh", position = 8)
    private Integer asTakeAsh;

    /**
     * 骨灰处理方式编码
     */
    @AnValidate(name = "骨灰处理方式", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "骨灰处理方式", name = "ashHandleTypeCode", position = 9)
    private Integer ashHandleTypeCode;

    /**
     * 骨灰处理方式名称
     */
    @AnValidate(name = "骨灰处理方式")
    @ApiModelProperty(value = "骨灰处理方式", name = "ashHandleType", position = 10)
    @AnDict(dict = EDictCode.ASHES_TREATMENT, ref = "ashHandleTypeCode")
    private String ashHandleType;

    /**
     * 骨灰去向编码
     */
    @AnValidate(name = "骨灰去向编码", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "骨灰去向编码", name = "ashWhereaboutsCode", position = 11)
    private Integer ashWhereaboutsCode;

    /**
     * 骨灰去向
     */
    @AnValidate(name = "骨灰去向")
    @ApiModelProperty(value = "骨灰去向", name = "ashWhereabouts", position = 12)
    @AnDict(dict = EDictCode.ASHES_WHEREABOUTS, ref = "ashWhereaboutsCode")
    private String ashWhereabouts;

    /**
     * 火化类型编码
     */
    @AnValidate(name = "火化类型编码", code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "火化类型编码", name = "cremationTypeCode", position = 13)
    private Integer cremationTypeCode;

    /**
     * 火化类型
     */
    @AnValidate(name = "火化类型")
    @ApiModelProperty(value = "火化类型", name = "cremationType", position = 14)
    @AnDict(dict = EDictCode.CREMATION_TYPE, ref = "cremationTypeCode")
    private String cremationType;

    /**
     * 规则数量
     */
    @AnValidate(name = "规则数量", required = true, code = EValidateCode.NO_LESS_ZERO)
    @ApiModelProperty(value = "规则数量", name = "ruleNumber", position = 15)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal ruleNumber;

    /**
     * 规则单位
     */
    @AnValidate(name = "规则单位", required = true)
    @ApiModelProperty(value = "规则单位", name = "ruleUnit", position = 16)
    private String ruleUnit;

    /**
     * 规则编码
     */
    @AnValidate(name = "规则编码")
    @ApiModelProperty(value = "规则编码", name = "ruleCode", position = 17)
    private String ruleCode;

    /**
     * 规则备注
     */
    @AnValidate(name = "规则备注")
    @ApiModelProperty(value = "规则备注", name = "ruleRemark", position = 18)
    private String ruleRemark;

    /**
     * 备注
     */
    @AnValidate(name = "备注")
    @ApiModelProperty(value = "备注", name = "remark", position = 19)
    private String remark;

    /**
     * 数据版本号
     */
    @AnValidate(name = "数据版本号")
    @ApiModelProperty(value = "数据版本号", name = "version", position = 20)
    private Long version;

    /**
     * 业务费用与物品服务
     */
    @AnValidate(name = "业务费用与物品服务", required = true)
    @ApiModelProperty(value = "业务费用与物品服务", name = "charges", position = 21)
    private BusinessCharges charges;

    public Integer getId() {
        return id;
    }

    public CremationData setId(Integer id) {
        this.id = id;
        return this;
    }

    public String getBusinessCode() {
        return businessCode;
    }

    public CremationData setBusinessCode(String businessCode) {
        this.businessCode = businessCode;
        return this;
    }

    public Integer getFurnaceTypeCode() {
        return furnaceTypeCode;
    }

    public CremationData setFurnaceTypeCode(Integer furnaceTypeCode) {
        this.furnaceTypeCode = furnaceTypeCode;
        return this;
    }

    public String getFurnaceType() {
        return furnaceType;
    }

    public CremationData setFurnaceType(String furnaceType) {
        this.furnaceType = furnaceType;
        return this;
    }

    public Integer getAsAppointment() {
        return asAppointment;
    }

    public CremationData setAsAppointment(Integer asAppointment) {
        this.asAppointment = asAppointment;
        return this;
    }

    public Date getAppointmentDate() {
        return appointmentDate;
    }

    public CremationData setAppointmentDate(Date appointmentDate) {
        this.appointmentDate = appointmentDate;
        return this;
    }

    public String getAppointmentTimeSegment() {
        return appointmentTimeSegment;
    }

    public CremationData setAppointmentTimeSegment(String appointmentTimeSegment) {
        this.appointmentTimeSegment = appointmentTimeSegment;
        return this;
    }

    public Integer getAsTakeAsh() {
        return asTakeAsh;
    }

    public CremationData setAsTakeAsh(Integer asTakeAsh) {
        this.asTakeAsh = asTakeAsh;
        return this;
    }

    public Integer getAshHandleTypeCode() {
        return ashHandleTypeCode;
    }

    public CremationData setAshHandleTypeCode(Integer ashHandleTypeCode) {
        this.ashHandleTypeCode = ashHandleTypeCode;
        return this;
    }

    public String getAshHandleType() {
        return ashHandleType;
    }

    public CremationData setAshHandleType(String ashHandleType) {
        this.ashHandleType = ashHandleType;
        return this;
    }

    public Integer getAshWhereaboutsCode() {
        return ashWhereaboutsCode;
    }

    public CremationData setAshWhereaboutsCode(Integer ashWhereaboutsCode) {
        this.ashWhereaboutsCode = ashWhereaboutsCode;
        return this;
    }

    public String getAshWhereabouts() {
        return ashWhereabouts;
    }

    public CremationData setAshWhereabouts(String ashWhereabouts) {
        this.ashWhereabouts = ashWhereabouts;
        return this;
    }

    public Integer getCremationTypeCode() {
        return cremationTypeCode;
    }

    public CremationData setCremationTypeCode(Integer cremationTypeCode) {
        this.cremationTypeCode = cremationTypeCode;
        return this;
    }

    public String getCremationType() {
        return cremationType;
    }

    public CremationData setCremationType(String cremationType) {
        this.cremationType = cremationType;
        return this;
    }

    public BigDecimal getRuleNumber() {
        return ruleNumber;
    }

    public CremationData setRuleNumber(BigDecimal ruleNumber) {
        this.ruleNumber = ruleNumber;
        return this;
    }

    public String getRuleUnit() {
        return ruleUnit;
    }

    public CremationData setRuleUnit(String ruleUnit) {
        this.ruleUnit = ruleUnit;
        return this;
    }

    public String getRuleCode() {
        return ruleCode;
    }

    public CremationData setRuleCode(String ruleCode) {
        this.ruleCode = ruleCode;
        return this;
    }

    public String getRuleRemark() {
        return ruleRemark;
    }

    public CremationData setRuleRemark(String ruleRemark) {
        this.ruleRemark = ruleRemark;
        return this;
    }

    public String getRemark() {
        return remark;
    }

    public CremationData setRemark(String remark) {
        this.remark = remark;
        return this;
    }

    public Long getVersion() {
        return version;
    }

    public CremationData setVersion(Long version) {
        this.version = version;
        return this;
    }

    public BusinessCharges getCharges() {
        return charges;
    }

    public CremationData setCharges(BusinessCharges charges) {
        this.charges = charges;
        return this;
    }
}
